package com.lz.job.sterotype;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import org.springframework.stereotype.Service;

/**
 * Job注解
 * <p>
 * 相关调度任务上需要配置这个注解，相当于@Service功能.
 *
 * @author zhaoshb
 * @since 0.0.1
 */
@Target({ TYPE, FIELD, METHOD })
@Retention(RUNTIME)
@Documented
@Service
public @interface Job {

	/**
	 * job的名称，供日志输出时使用.
	 * <p>
	 * <strong>英文书写</strong>
	 *
	 * @return 调度任务的名称.
	 *
	 */
	String name();

	/**
	 * 执行的方法名称.
	 * <p>
	 * 供任务调度时使用.
	 * <p>
	 * 要求此方法无参，参数通过Configuration注入.
	 *
	 * @return 方法名称
	 */
	String method();

}
